/** layui-v2.5.5 MIT License By  */
;
layui.define("layer",
function(e) {
	"use strict";
	var t = layui.$,
	i = layui.layer,
	n = layui.hint(),
	o = layui.device(),
	a = {
		config: {},
		set: function(e) {
			var i = this;
			return i.config = t.extend({},
			i.config, e),
			i
		},
		on: function(e, t) {
			return layui.onevent.call(this, r, e, t)
		}
	},
	l = function() {
		var e = this;
		return {
			upload: function(t) {
				e.upload.call(e, t)
			},
			reload: function(t) {
				e.reload.call(e, t)
			},
			config: e.config
		}
	},
	r = "upload",
	u = "layui-upload-file",
	c = "layui-upload-form",
	f = "layui-upload-iframe",
	s = "layui-upload-choose",
	p = function(e) {
		var i = this;
		i.config = t.extend({},
		i.config, a.config, e),
		i.render()
	};
	p.prototype.config = {
		accept: "images",
		exts: "",
		auto: !0,
		bindAction: "",
		url: "",
		field: "file",
		acceptMime: "",
		method: "post",
		data: {},
		drag: !0,
		size: 0,
		number: 0,
		multiple: !1
	},
	p.prototype.render = function(e) {
		var i = this,
		e = i.config;
		e.elem = t(e.elem),
		e.bindAction = t(e.bindAction),
		i.file(),
		i.events()
	},
	p.prototype.file = function() {
		var e = this,
		i = e.config,
		n = e.elemFile = t(['<input class="' + u + '" type="file" accept="' + i.acceptMime + '" name="' + i.field + '"', i.multiple ? " multiple": "", ">"].join("")),
		a = i.elem.next(); (a.hasClass(u) || a.hasClass(c)) && a.remove(),
		o.ie && o.ie < 10 && i.elem.wrap('<div class="layui-upload-wrap"></div>'),
		e.isFile() ? (e.elemFile = i.elem, i.field = i.elem[0].name) : i.elem.after(n),
		o.ie && o.ie < 10 && e.initIE()
	},
	p.prototype.initIE = function() {
		var e = this,
		i = e.config,
		n = t('<iframe id="' + f + '" class="' + f + '" name="' + f + '" frameborder="0"></iframe>'),
		o = t(['<form target="' + f + '" class="' + c + '" method="post" key="set-mine" enctype="multipart/form-data" action="' + i.url + '">', "</form>"].join(""));
		t("#" + f)[0] || t("body").append(n),
		i.elem.next().hasClass(c) || (e.elemFile.wrap(o), i.elem.next("." + c).append(function() {
			var e = [];
			return layui.each(i.data,
			function(t, i) {
				i = "function" == typeof i ? i() : i,
				e.push('<input type="hidden" name="' + t + '" value="' + i + '">')
			}),
			e.join("")
		} ()))
	},
	p.prototype.msg = function(e) {
		return i.msg(e, {
			icon: 2,
			shift: 6
		})
	},
	p.prototype.isFile = function() {
		var e = this.config.elem[0];
		if (e) return "input" === e.tagName.toLocaleLowerCase() && "file" === e.type
	},
	p.prototype.preview = function(e) {
		var t = this;
		window.FileReader && layui.each(t.chooseFiles,
		function(t, i) {
			var n = new FileReader;
			n.readAsDataURL(i),
			n.onload = function() {
				e && e(t, i, this.result)
			}
		})
	},
	p.prototype.upload = function(e, i) {
		var n, a = this,
		l = a.config,
		r = a.elemFile[0],
		u = function() {
			var i = 0,
			n = 0,
			o = e || a.files || a.chooseFiles || r.files,
			u = function() {
				l.multiple && i + n === a.fileLength && "function" == typeof l.allDone && l.allDone({
					total: a.fileLength,
					successful: i,
					aborted: n
				})
			};
			layui.each(o,
			function(e, o) {
				var r = new FormData;
				r.append(l.field, o),
				layui.each(l.data,
				function(e, t) {
					t = "function" == typeof t ? t() : t,
					r.append(e, t)
				}),
				t.ajax({
					url: l.url,
					type: "post",
					data: r,
					contentType: !1,
					processData: !1,
					dataType: "json",
					headers: l.headers || {},
					success: function(t) {
						i++,
						d(e, t),
						u()
					},
					error: function() {
						n++,
						a.msg("请求上传接口出现异常"),
						m(e),
						u()
					},
					xhr: function() {
						var e = new XMLHttpRequest;
						return e.upload.addEventListener("progress",
						function(e) {
							if (e.lengthComputable) {
								var t = Math.floor(e.loaded / e.total * 100);
								"function" == typeof l.progress && l.progress(t, e)
							}
						}),
						e
					}
				})
			})
		},
		c = function() {
			var e = t("#" + f);
			a.elemFile.parent().submit(),
			clearInterval(p.timer),
			p.timer = setInterval(function() {
				var t, i = e.contents().find("body");
				try {
					t = i.text()
				} catch(n) {
					a.msg("获取上传后的响应信息出现异常"),
					clearInterval(p.timer),
					m()
				}
				t && (clearInterval(p.timer), i.html(""), d(0, t))
			},
			30)
		},
		d = function(e, t) {
			if (a.elemFile.next("." + s).remove(), r.value = "", "object" != typeof t) try {
				t = JSON.parse(t)
			} catch(i) {
				return t = {},
				a.msg("请对上传接口返回有效JSON")
			}
			"function" == typeof l.done && l.done(t, e || 0,
			function(e) {
				a.upload(e)
			})
		},
		m = function(e) {
			l.auto && (r.value = ""),
			"function" == typeof l.error && l.error(e || 0,
			function(e) {
				a.upload(e)
			})
		},
		h = l.exts,
		v = function() {
			var t = [];
			return layui.each(e || a.chooseFiles,
			function(e, i) {
				t.push(i.name)
			}),
			t
		} (),
		g = {
			preview: function(e) {
				a.preview(e)
			},
			upload: function(e, t) {
				var i = {};
				i[e] = t,
				a.upload(i)
			},
			pushFile: function() {
				return a.files = a.files || {},
				layui.each(a.chooseFiles,
				function(e, t) {
					a.files[e] = t
				}),
				a.files
			},
			resetFile: function(e, t, i) {
				var n = new File([t], i);
				a.files = a.files || {},
				a.files[e] = n
			}
		},
		y = function() {
			// if ("choose" !== i && !l.auto || (l.choose && l.choose(g), "choose" !== i)) return l.before && l.before(g),
			// o.ie ? o.ie > 9 ? u() : c() : void u()
			return "choose"===t?l.choose&&l.choose(g):((l.before&&l.before(g))===false?'':a.ie?a.ie>9?u():c():void u())
			
		};
		if (v = 0 === v.length ? r.value.match(/[^\/\\]+\..+/g) || [] || "": v, 0 !== v.length) {
			switch (l.accept) {
			case "file":
				if (h && !RegExp("\\w\\.(" + h + ")$", "i").test(escape(v))) return a.msg("选择的文件中包含不支持的格式"),
				r.value = "";
				break;
			case "video":
				if (!RegExp("\\w\\.(" + (h || "avi|mp4|wma|rmvb|rm|flash|3gp|flv") + ")$", "i").test(escape(v))) return a.msg("选择的视频中包含不支持的格式"),
				r.value = "";
				break;
			case "audio":
				if (!RegExp("\\w\\.(" + (h || "mp3|wav|mid") + ")$", "i").test(escape(v))) return a.msg("选择的音频中包含不支持的格式"),
				r.value = "";
				break;
			default:
				if (layui.each(v,
				function(e, t) {
					RegExp("\\w\\.(" + (h || "jpg|png|gif|bmp|jpeg$") + ")", "i").test(escape(t)) || (n = !0)
				}), n) return a.msg("选择的图片中包含不支持的格式"),
				r.value = ""
			}
			if (a.fileLength = function() {
				var t = 0,
				i = e || a.files || a.chooseFiles || r.files;
				return layui.each(i,
				function() {
					t++
				}),
				t
			} (), l.number && a.fileLength > l.number) return a.msg("同时最多只能上传的数量为：" + l.number);
			if (l.size > 0 && !(o.ie && o.ie < 10)) {
				var F;
				if (layui.each(a.chooseFiles,
				function(e, t) {
					if (t.size > 1024 * l.size) {
						var i = l.size / 1024;
						i = i >= 1 ? i.toFixed(2) + "MB": l.size + "KB",
						r.value = "",
						F = i
					}
				}), F) return a.msg("文件不能超过" + F)
			}
			y()
		}
	},
	p.prototype.reload = function(e) {
		e = e || {},
		delete e.elem,
		delete e.bindAction;
		var i = this,
		e = i.config = t.extend({},
		i.config, a.config, e),
		n = e.elem.next();
		n.attr({
			name: e.name,
			accept: e.acceptMime,
			multiple: e.multiple
		})
	},
	p.prototype.events = function() {
		var e = this,
		i = e.config,
		a = function(t) {
			e.chooseFiles = {},
			layui.each(t,
			function(t, i) {
				var n = (new Date).getTime();
				e.chooseFiles[n + "-" + t] = i
			})
		},
		l = function(t, n) {
			var o = e.elemFile,
			a = t.length > 1 ? t.length + "个文件": (t[0] || {}).name || o[0].value.match(/[^\/\\]+\..+/g) || [] || "";
			o.next().hasClass(s) && o.next().remove(),
			e.upload(null, "choose"),
			e.isFile() || i.choose || o.after('<span class="layui-inline ' + s + '">' + a + "</span>")
		};
		i.elem.off("upload.start").on("upload.start",
		function() {
			var o = t(this),
			a = o.attr("lay-data");
			if (a) try {
				a = new Function("return " + a)(),
				e.config = t.extend({},
				i, a)
			} catch(l) {
				n.error("Upload element property lay-data configuration item has a syntax error: " + a)
			}
			e.config.item = o,
			e.elemFile[0].click()
		}),
		o.ie && o.ie < 10 || i.elem.off("upload.over").on("upload.over",
		function() {
			var e = t(this);
			e.attr("lay-over", "")
		}).off("upload.leave").on("upload.leave",
		function() {
			var e = t(this);
			e.removeAttr("lay-over")
		}).off("upload.drop").on("upload.drop",
		function(n, o) {
			var r = t(this),
			u = o.originalEvent.dataTransfer.files || [];
			r.removeAttr("lay-over"),
			a(u),
			i.auto ? e.upload(u) : l(u)
		}),
		e.elemFile.off("upload.change").on("upload.change",
		function() {
			var t = this.files || [];
			a(t),
			i.auto ? e.upload() : l(t)
		}),
		i.bindAction.off("upload.action").on("upload.action",
		function() {
			e.upload()
		}),
		i.elem.data("haveEvents") || (e.elemFile.on("change",
		function() {
			t(this).trigger("upload.change")
		}), i.elem.on("click",
		function() {
			e.isFile() || t(this).trigger("upload.start")
		}), i.drag && i.elem.on("dragover",
		function(e) {
			e.preventDefault(),
			t(this).trigger("upload.over")
		}).on("dragleave",
		function(e) {
			t(this).trigger("upload.leave")
		}).on("drop",
		function(e) {
			e.preventDefault(),
			t(this).trigger("upload.drop", e)
		}), i.bindAction.on("click",
		function() {
			t(this).trigger("upload.action")
		}), i.elem.data("haveEvents", !0))
	},
	a.render = function(e) {
		var t = new p(e);
		return l.call(t)
	},
	e(r, a)
});